#ifndef PARAFLUIDPLANE_H
#define PARAFLUIDPLANE_H

#include "parafluidobject.h"
#include "parafluidvector.h"

namespace ParaFluid
{
	/**
	* A Plane defined by it's Normal.
	*/
	class Plane
		: public Object
	{
		
	public:
		
		/**
		* Destructor
		*/
		virtual ~Plane();
		
		/**
		* Default Constructor
		*/
		Plane();
		
		/**
		* Copy Constructor
		*/
		Plane(const Plane & other);
		
		/**
		* Constructor with Position and Normal
		*/
		Plane(const Vector & pos, const Vector & normal);
		
		/**
		* Assignment Operator
		*/
		Plane & operator= (const Plane & rhs);
		
		/**
		* Comparison Operator
		*/
		bool operator== (const Plane & rhs) const;
		
		/**
		* Get the Projection of a Point on this Plane.
		* @return Projected Point
		*/
		Vector projection(const Vector & point) const;
		
		/**
		* Normal
		*/
		Vector normal;
		
	};
	
}

#endif

